[UPDATE] AWS Elemental MediaConnectがSRTプロトコルをサポートしました!
はじめに
清水です。本日お届けするアップデート情報はこちら!AWSの高品質ライブ動画伝送サービスであるAWS Elemental MediaConnectでSRTプロトコルをサポートしました!(2021/03/17にポストされたアップデート情報になります。)
- Support for SRT protocol added to AWS Elemental MediaConnect
- AWS Elemental MediaConnect に追加された SRT プロトコルのサポート
re:Invent 2018期間中に新サービスとしてリリースされたAWS Elemental MediaConnect、リリース当時はRTP (Real-Time Transport Protocol)、RTP-FEC、そしてZixi (push)のサポートでした。2019年にはZixi (pull)をサポート、そしてRIST (Reliable Internet Stream Transport)プロトコルもサポートされました。そしてこのたび、プロトコルとしてSRT (Secure Reliable Transport)もサポートに加わったかたちです。
本エントリではSRTプロトコルで映像を打ち上げ、AWS MediaConnectからAWS Elemental MediaLiveに伝送、さらにAWS Elemental MediaStoreと連携させて伝送後の映像をHLS形式で視聴してみましたのでまとめてみます。
AWS Elemental MediaConnectでSRTなFlowを作成
まずはAWS Elemental MediaConnectでFlowを作成します。マネジメントコンソールでMediaConnectのページに進み、[Create flow]ボタンをクリックします。
Flowの名前を入力します。Availability Zoneも指定可能ですが、今回はAny (default)
としました。VPCについては今回は使用しないのでそのまま進めます。
Source typeはStandard source
を選択、こちらもSourceの名前を入力しておきます。ProtocolでデフォルトのRTP
からSRT listener
に変更します。
その他パラメータの指定です。ユーザガイドを参考に進めます。
Creating a flow that uses a standard source - AWS Elemental MediaConnect
Inbound portについて、今回は3000
を使用します。Whitelist CIDR blockとしてアクセス元(打ち上げ元)のIPアドレスをCIDR形式で指定します。Source descriptionについてはこのSourceの説明を入力しておきました。Maximum bitrateには、後述するStreaming Softwareのビットレート2,000kbpsを考慮して5000000
とします。Minimum latencyについては空欄としました。(MediaConnectのデフォルトの2,000ミリ秒が適用される想定です。)Decryptionは無効のままで[Create flow]でFlowを作成します。
Flow作成後の画面で、SourceのInboud IP addressを確認しておきます。こちらが映像打ち上げの際のAWS側エンドポイントのIPアドレスとなります。
AWS Elemental MediaLiveリソースの作成
MediaConnectのFlowが作成できたら、続いてMediaConnectからの映像を受け取るAWS Elemental MediaLive側のリソースを作成していきます。なお、MediaConnectからの伝送後の映像をHLS形式で視聴確認する場合、MediaLiveの出力を(今回であれば)AWS Elemental MediaStoreに書き出す必要があります。このMediaStoreについてもリソースの作成が本来必要ではありますが、本エントリでは既存のMediaStoreリソース(コンテナ)を使用したため割愛させていただきます。またMediaLiveの設定についても、MediaConnectとの連携部分を中心とさせていただき、こちらも詳細については割愛させていただきます。これらの詳細については下記エントリなどを参照ください。
まずはMediaLiveのInputリソースを作成します。[Create Input]から進みInput nameを適切に入力、Input typeはMediaConnect
を選択します。
MediaConnect flowsの設定箇所、Input classはSINGLE_INPUT
としました。Flow A ARNで先ほど作成したMediaConnectのFlowを選択します。
Role ARNにて、MediaLiveデフォルトのIAMロール(MediaLiveAccessRole)を指定しました。[Create]ボタンでInputを作成します。
Inputが作成できたら、続いてMediaLiveのChannelリソースを作成します。[Create channel]ボタンから進み、Channel nameを適切に入力、IAMロールはMediaLiveデフォルトのロール(MediaLiveAccessRole)を指定しました。Channel templateとしてLive event (HLS)をベースに設定していきます。またChannel classはSINGLE_PIPELINE
としました。
Input attachmentsでは先ほど作成した、MediaConnectをInput typeに持つInputを選択し、[Confirm]します。
Output groupsでHLS group destinationの設定を行います。URLにはmediastoressl://
でMediaStoreコンテナのエンドポイントならびにパスを入力します。またHLS settingsのCDN settingsの項目で、HLS media store
を選択しておきます。
今回は動作検証が目的のため、HLSのABRは不要と判断し、720p30以外のoutputsについては削除してしまいました。
[Create channel]ボタンでChannelを作成します。
Streaming Software「It's my Live」の準備
今回、SRTプロトコルに対応したストリーミングソフトウェアとしてIt's my LiveというiPhone向けアプリを使用しました。
Ingest方式で広く使われているRTMPのほか、HLSや今回使用するSRTでのIngestに対応しているようです。このアプリをiPhone 6s上で動かします。起動後、右上の歯車のアイコンから設定画面に移動、URL1にsrt://[MediaConnectIP]:3000
を指定します。[MediaConnectIP]
は先ほどMediaConnectでFlow作成直後に確認したSourceのInbound IP address、続く3000
はFlow作成時に指定したポート番号ですね。
ビットレートやフレームレートなどは右下のアイコンで指定可能です。以下のように、ビットレート2000kbps、フレームレート30fpsと指定しました。(最後の倍率はカメラの倍率を示しているようです。)
実際にMediaConnectにSRTプロトコルで映像を打ち上げて確認
MediaConnect、MediaLiveとMediaStore、そしてStreaming Software側の準備が整いました。いよいよ実際にMediaConnectにSRTプロトコルで映像を打ち上げ、視聴確認をしてみます。まずはMediaConnectのFlow、MediaLiveのChannelをそれそれStartさせましょう。
MediaConnectはStatusがACTIE
に、MediaLiveはChannel stateがRunning
になれば準備完了です。
Streaming Software「It's my Live」で画面右端真ん中のボタンを押すと打ち上げがはじまります。(ボタンが赤くなります。)
映像打ち上げが開始されたら、Video.jsのvideojs-http-streaming(VideoJS HTTP Streaming/VHS)を使って視聴してみます。MediaStoreのトップレベルマニフェストファイルのURLを入力、[Load]して再生させてみましょう。(MediaStoreはパブリックアクセス設定、ならびにCORS設定済みとします。)
HLS形式での視聴ができました!
まとめ
AWS Elemental MediaConnectで新たにサポートされたSRTプロトコルを使いStreaming Softwareから映像を打ち上げ、MediaLiveとMediaStoreを連携させて実際に打ち上げた映像を視聴してみました。SRTは信頼性が高くかつ低遅延であることから、Ingest方式の新たなスタンダートになるかと期待されている技術です。MediaConnectでサポートされたことでAWSでもマネージドサービスとして使用できるようになりました。さらに以下のAWS Media Blogのエントリによると、オンプレミス側のライブエンコーダ、AWS Elemental LiveでもSRTプロトコルが利用可能になったとのことです。
- AWS Elemental MediaConnect adds SRT to its list of high-availability protocols | AWS Media Blog
- AWS Elemental MediaConnectが映像伝送プロトコルSRTをサポートしました | Amazon Web Services ブログ
また今回はAWS Elemental MediaConnectでのSRTプロトコルのサポートでしたが、AWS Elemental MediaLiveとしてSRTをサポートしていくのか、という点も気になるところでした。